var message='hello global'

function foo(){
    console.log(message)
}

function bar(){
    var message='hello bar'
    foo()
}
bar()


/* 
执行流程：
1.创建一个全局的对象Global Object：{message：undefined，foo:0x00，bar：0x01}
   1.1.只要看到上面有全局对象里面有函数，我们就会内存中创建一个foo函数对象  foo:{parent[scope]:GO，函数体}
   1.2 bar函数的对象:{parent[scope]:GO，函数体}   函数的作用域在编译时父级作用域已经确定了，与执行位置无关

2.执行代码
  创建一个全局的上下文(执行全局) VO对象：GO对象
  Global Object：{message：hello global，foo:0x00，bar：0x01}

  //遇见bar()这里会创建一个函数执行上下文FEC(执行函数)VO对象：AO对象:{message:undedined}
  执行代码Bar的AO对象:{message:hello bar}

  //在AO对象中遇见foo()会创建一个函数执行上下文FEC(执行函数)VO对象：AO对象:{}是空的  scopechain:VO+parentScope
  //执行代码 console.log(message)  //自己作用域找不到，去父级作用域GO中找(编译阶段已经确定，和调用位置无关)
  

  
*/
